/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package org.rm.beans;

import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import javax.faces.context.FacesContext;
import org.rm.entidades.*;
import org.rm.entidades.jpa.ExParcialController;
import org.rm.entidades.jpa.JugadoresJpaController;
import org.rm.entidades.jpa.exceptions.NonexistentEntityException;

/**
 *
 * @author ffbeltran
 */
public class ControladorUtil {

    private static Map<String, Class> entidades;
    static {
        entidades = new HashMap<String, Class>();
        entidades.put("vida", ExpVida.class);
        entidades.put("viaje", ExpViaje.class);
        entidades.put("pieza", ExpPieza.class);
        entidades.put("maniobra", ExpManiobra.class);
        entidades.put("idea", ExpIdea.class);
        entidades.put("hechizo", ExpHechizo.class);
        entidades.put("critico", ExpCritico.class);
    }

    public static Collection<Class> getEntidades() {
        return entidades.values();
    }

    public static Set<String> getNombresEntidades() {
        return entidades.keySet();
    }

    public static Class getEntidad(String name) {
        return entidades.get(name);
    }

    public static void addExpJugador(Jugadores jugador, int exp,
            Partida partida) {
        boolean exist = false;
        ExParcial exParcial;

        for (ExParcial aux : jugador.getExperiencia()) {
            if (aux.getPartida().equals(partida)) {
                exParcial = aux;
                exParcial.setExperiencia(exParcial.getExperiencia() + exp);
                exist = true;
                break;
            }
        }
        if (!exist) {
            exParcial = new ExParcial(exp, partida);
            ExParcialController.create(exParcial);
            jugador.getExperiencia().add(exParcial);
        }
        try {
            JugadoresJpaController.edit(jugador);
        } catch (NonexistentEntityException e) {
            e.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public static String getParam(String name) {
        return FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get(name);
    }
}
